home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / raytrace / pov / gen / povclk / povclock.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-11  |  3KB  |  85 lines

  1. { Program to increment an environment variable in batch files. Original  }
  2. { reason was to automate POV 2.0 animations with a simple batch file.    }
  3. { See TEST.BAT for a useable example. If PovClock seems to be having     }
  4. { problems setting up the environment, make sure you're running straight }
  5. { from DOS, and not from a shell or program launcher.                    }
  6. {                                                                        }
  7. { For example:                                                           }
  8. {   PovClock 0 360 50                                                    }
  9. { will loop for 50 frames from 0 to 360 when put in a batch file.        }
  10. {                                                                        }
  11. { Freeware for the whole world to enjoy. If you make any neat additions, }
  12. { I'd like to set them!                                                  }
  13. {                                                                        }
  14. {     Mitchell Ross       Internet: MRoss@Opie.BGSU.Edu                  }
  15. {     3670 Road 5-1       CI$:      70324,241                            }
  16. {     Delta, OH  43515                                                   }
  17. {                                                                        }
  18. { 11-12-93  Program Written                                              }
  19.  
  20. Program ClockCounter;
  21.  
  22. Uses DOS,EnvUnit;               { EnvUnit is an old freeware unit to }
  23.                                 { modify the DOS environment.        }
  24.  
  25. Var OldClock,StartVal,StopVal,TotalSteps : LongInt;
  26.  
  27. {---------------------------------}
  28. Function ValWd( WorkString : String) : LongInt;     { String => Int }
  29.  
  30. Var z : Integer;
  31.     Work : LongInt;
  32.  
  33. Begin
  34.   Work := 0;
  35.   Val( WorkString,Work,z);
  36.   ValWd := Work;
  37. End;
  38.  
  39. {---------------------------------}
  40. Function Strng( Number : Real; Size,Deci : Integer ) : String;
  41.  
  42. Var Work : String;                                  { Int => String }
  43.  
  44. Begin
  45.   If Size < Deci Then  Size := Deci;
  46.   Work := '';
  47.   Str(Number:Size:Deci,Work);
  48.   Strng := Work;
  49. End;
  50.  
  51. {----------------------------}
  52. Function ZeroPad( InStr : String; Size : integer ) : String;
  53.  
  54. Const Zeros = '00000000000000';                      { pad front with "0"'s }
  55.  
  56. begin
  57.   ZeroPad := Copy(Zeros,1,Size-(Length(InStr)))+InStr;
  58. end;
  59.  
  60. {---------------------------------}
  61. {---------------------------------}
  62. begin
  63.   If ParamCount <> 3 then begin
  64.     Writeln('POVCLOCK By Mitchell Ross');
  65.     Writeln;
  66.     Writeln('Syntax:  POVCLOCK StartVal StopVal StepsBetween');
  67.     Writeln('Must have environment var "POVCLOCK=000" before first run');
  68.     Writeln('Each run will step POVCLOCK to next value');
  69.     HALT;
  70.   end;
  71.  
  72.   StartVal   := Valwd(ParamStr(1));
  73.   StopVal    := Valwd(ParamStr(2));
  74.   TotalSteps := Valwd(ParamStr(3));
  75.   OldClock := Valwd(GetEnv('POVCLOCK'));       { get old CLOCK value }
  76.  
  77.   OldClock := OldClock + TRUNC((StopVal-StartVal+1) / TotalSteps);
  78.  
  79.   UseRootPSP;
  80.   If (SetEnv('POVCLOCK',ZeroPad(Strng(OldClock,0,0),3)) = FALSE) then begin
  81.     Writeln('Error setting up environment!');
  82.   end ELSE begin
  83.     Writeln('New POVCLOCK setting: ',Strng(OldClock,3,0));
  84.   end;
  85. end.